package types

type GetOrderLogReq struct {
	OrderId uint64 `msg:"订单id" form:"orderId" validate:"required"`                             //orderId必填,订单id
	OrganId uint64 `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
}

type OrderLogInfo struct {
	LogInfo    string `json:"logInfo"`
	CreateTime string `json:"createTime"`
}

type OrderLogList struct {
	List  []OrderLogInfo `json:"list"`
	Total int64          `json:"total"`
}
type OrderLogListResp struct {
	Data OrderLogList `json:"data"`
	Resp
}

type GetReturnOrderListReqForApi struct {
	Page            int64  `form:"page" validate:"omitempty"`                                          // 否,页码默认1
	PageSize        int64  `form:"pageSize" validate:"omitempty"`                                      // 否,每页数量默认10
	ReturnType      int32  `form:"returnType" validate:"omitempty"`                                    // 退货类型(1退货不退钱，2退货退钱，3换货)
	CustomerId      uint64 `form:"customerId" validate:"omitempty"`                                    // 否,客户ID
	OldOrderId      uint64 `form:"oldOrderId" validate:"omitempty"`                                    // 否,原订单ID
	ReturnOrderCode string `form:"returnOrderCode" validate:"omitempty"`                               // 否,退货单号
	StartDate       int64  `form:"startDate" validate:"omitempty"`                                     // 否,开始时间
	EndDate         int64  `form:"endDate" validate:"omitempty"`                                       // 否,结束时间
	OrganId         uint64 `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
}

type CreateReturnOrderReqForApi struct {
	Items   CreateReturnOrderItemReq `json:"item" validate:"required"`                                           // 退货商品信息
	OrganId uint64                   `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
}

type CreateReturnOrderItemReq struct {
	OldOrderId     uint64     `json:"oldOrderId" validate:"required"`     // 是，原订单ID
	OldOrderCode   string     `json:"oldOrderCode" validate:"required"`   // 是，原订单号
	OldOrderItemId uint64     `json:"oldOrderItemId" validate:"required"` // 是，原销售订单商品ID
	CustomerId     uint64     `json:"customerId" validate:"omitempty"`    // 否，客户ID
	Quantity       int64      `json:"quantity" validate:"omitempty"`      // 否，退货数量
	ReturnAmount   int64      `json:"returnAmount" validate:"omitempty"`  // 否，退货金额（需要退钱时填写）
	ReturnType     int32      `json:"returnType" validate:"required"`     // 是，退货类型（1=仅退货,2=仅退钱，3.换货）
	Remark         string     `json:"remark" validate:"omitempty"`        // 否，退货备注
	OldCodes       []string   `json:"oldCodes" validate:"omitempty"`      // 否，退货商品一物一码
	NewOrderItems  OrderItems `json:"newOrderItem" validate:"omitempty"`  // 换货商品信息
}

type OrderItems struct {
	Count           int64    `json:"count" validate:"required,gt=0"`                       // 必传，数量
	GoodId          uint64   `json:"goodId" validate:"required,gt=0"`                      // 必传，商品ID
	GoodsTitle      string   `json:"goodsTitle" validate:"omitempty"`                      // 必传，商品名称
	PriceAtOrder    int64    `json:"priceAtOrder" validate:"omitempty,gte=0"`              // 必传，销售金额
	Discount        int64    `json:"discount,optional"`                                    // 可选，折扣
	Amount          int64    `json:"amount" validate:"omitempty,gt=0"`                     // 必传，金额
	IgnoreStock     int32    `json:"ignoreStock" validate:"required"`                      // 必传，是否忽略库存检查1忽略2否
	Codes           []string `json:"codes" validate:"omitempty,dive"`                      // 可选，一物一码的数组
	EyeType         int32    `json:"eyeType" validate:"omitempty,oneof=1 2 3" msg:"左右眼类别"` //必传， 1左眼 2右眼 3综合
	GoodsId         uint64   `json:"goodsId" validate:"required"`                          // 必传，商品ID
	GoodsImgAtOrder string   `json:"goodsImgAtOrder" validate:"omitempty"`                 // 可选，商品图片
	BrandName       string   `json:"brandName" validate:"omitempty"`                       // 可选，品牌名称
	CategoryName    string   `json:"categoryName" validate:"omitempty"`                    // 可选，分类名称
	TypeName        string   `json:"typeName" validate:"omitempty"`                        // 可选，类型名称
	GoodsCode       string   `json:"goodsCode" validate:"omitempty"`                       // 可选，商品编号
	GoodsSpecId     uint64   `json:"goodsSpecId" validate:"required"`                      //必传，规格ID
	GoodsSpecName   string   `json:"goodsSpecName" validate:"omitempty"`                   // 必传，规格名称
	Spelling        string   `json:"spelling" validate:"omitempty"`                        // 可选，拼音码
	Description     string   `json:"description" validate:"omitempty"`                     // 可选，标签
	VipDiscountRate int64    `json:"vipDiscountRate" validate:"omitempty"`                 // 可选，VIP折扣比例
	SubItemDiscount int64    `json:"subItemDiscount" validate:"omitempty"`                 // 可选，分项优惠
}

type GetReturnOrderDetailResp struct {
	ReturnOrderCode string          `json:"returnOrderCode"`                                                    // 退货单号
	OrganId         uint64          `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
	CustomerId      uint64          `json:"customerId" validate:"omitempty"`                                    // 客户ID
	ReturnAmount    int64           `json:"returnAmount" validate:"omitempty"`                                  // 退款总金额（退货退钱时填写）
	Quantity        int64           `json:"quantity" validate:"required"`                                       // 退货数量
	ReturnType      int32           `json:"returnType" validate:"required"`                                     // 退货类型（1=退货不退钱,2=退货退钱）
	Remark          string          `json:"remark" validate:"omitempty"`                                        // 退货备注
	OldOrderItem    OrderItemForApi `json:"oldOrderItem"`                                                       // 原商品详情列表
	NewOrderItem    OrderItemForApi `json:"newOrderItem"`                                                       // 新销售订单商品（仅换货时返回）
}
type GetReturnOrderDetailRes struct {
	Data GetReturnOrderDetailResp `json:"data"`
	Resp
}

type GetReturnOrderDetailReqForApi struct {
	Id uint64 `form:"id" validate:"required"` // 退货单ID
}

type ReturnOrderItem struct {
	Id              uint64 `json:"id"`                                                                 // 退货单ID
	ReturnOrderCode string `json:"returnOrderCode"`                                                    // 退货单号
	OrganId         uint64 `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
	OldOrderId      uint64 `json:"oldOrderId"`                                                         // 原订单ID
	OldOrderCode    string `json:"oldOrderCode"`                                                       // 原订单号
	OldOrderItemId  uint64 `json:"oldOrderItemId"`                                                     // 原订单项ID
	NewOrderItemId  uint64 `json:"newOrderItemId"`                                                     // 新销售订单ID
	ReturnAmount    int64  `json:"returnAmount"`                                                       // 退款总金额（退货退钱时填写）
	Quantity        int64  `json:"quantity"`                                                           // 退货数量
	ReturnType      int32  `json:"returnType"`                                                         // 退货类型（1=仅退货,2=仅退钱，3.换货）
	Remark          string `json:"remark"`                                                             // 退货备注
	CreateTime      string `json:"createTime"`                                                         // 退款时间
}

type ReturnOrderList struct {
	List  []ReturnOrderItem `json:"list"`
	Total int64             `json:"total"`
}
type ReturnOrderListResp struct {
	Data ReturnOrderList `json:"data"`
	Resp
}

type DeleteOrderReq struct {
	Id uint64 `json:"id" validate:"required"` // 订单ID
}

type CreateOrderResqForApi struct {
	Id            uint64          `json:"id"`             // 销售单ID
	OrderCode     string          `json:"orderCode"`      // 销售单编号
	TotalAmount   int64           `json:"totalAmount"`    // 折扣前金额
	PaidAmount    int64           `json:"paidAmount"`     // 折扣后金额
	CanPay        bool            `json:"canPay"`         // 是否可以支付
	PaymentConfig []PaymentConfig `json:"paymentOptions"` // 支付方式
}
type CreateOrderResqForApiResp struct {
	Data CreateOrderResqForApi `json:"data"`
	Resp
}

type PaymentConfig struct {
	Platform        string `json:"platform"`        // 支付平台
	PaymentMethodID uint64 `json:"paymentMethodID"` // 支付方式ID
	Icon            string `json:"icon"`            // 支付图标
	IsEnabled       bool   `json:"isEnabled"`       // 是否启用
}

type CreateOrderReqForApi struct {
	OrderItems       []OrderItems `json:"orderItems"  validate:"required,dive"`                               // 必传，销售单商品列表
	CustomerId       uint64       `json:"customerId" validate:"omitempty"`                                    // 可选，顾客ID
	TotalAmount      int64        `json:"totalAmount" validate:"omitempty,gte=0"`                             // 必传，标准总价,大于等于0
	PaidAmount       int64        `json:"paidAmount" validate:"omitempty,gte=0"`                              // 必传，应收金额,大于等于0
	Discount         int64        `json:"discount" validate:"omitempty"`                                      //可选，直减,大于等于0
	Quantity         int64        `json:"quantity" validate:"required,gt=0"`                                  // 必传，数量，大于0，并且只能是整数
	Remark           string       `json:"remark" validate:"omitempty"`                                        // 可选，备注
	IsProcess        int32        `json:"isProcess" validate:"required"`                                      // 必传，是否需要加工1，2不需要加工
	CheckListId      uint64       `json:"checkListId" validate:"omitempty"`                                   // 可选，检查单ID
	CheckCode        string       `json:"checkCode" validate:"omitempty"`                                     // 可选，检查单编号
	BusinessUserId   uint64       `json:"businessUserId" validate:"required"`                                 // 必传，业务员ID
	BusinessUserName string       `json:"businessUserName" validate:"required"`                               // 必传，业务员名称
	BusinessTime     int64        `json:"businessTime" validate:"required"`                                   // 必传，业务时间
	VipDiscount      int64        `json:"vipDiscount" validate:"omitempty,gte=0"`                             // 可选，VIP优惠金额，大于等于0
	SubTotalDiscount int64        `json:"subTotalDiscount" validate:"omitempty,gte=0"`                        // 可选，分项优惠总额
	ReceivableAmount int64        `json:"receivableAmount" validate:"omitempty,gte=0"`                        // 可选，应收总额（未计算直减）
	TotalDiscount    int64        `json:"totalDiscount" validate:"omitempty,gte=0"`                           // 可选，整单直减
	OrganId          uint64       `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
}

type CreateGlassesStoreUnfinishedOrderReqForApi struct {
	OrderItems       []OrderItems `json:"orderItems"  validate:"required,dive"`   // 销售单商品列表
	CustomerId       uint64       `json:"customerId,optional"`                    // 顾客ID
	DiscountCouponId uint64       `json:"discountCouponId,optional"`              // 满减类型优惠券ID 可选
	TotalAmount      int64        `json:"totalAmount" validate:"omitempty,gte=0"` // 标准总价,大于等于0
	PaidAmount       int64        `json:"paidAmount" validate:"omitempty,gte=0"`  // 应收金额,大于等于0
	Discount         int64        `json:"discount" validate:"omitempty,gte=0"`    //直减,大于等于0
	Quantity         int64        `json:"quantity" validate:"required,gt=0"`      // 数量，大于0，并且只能是整数
	Remark           string       `json:"remark,optional"`                        // 备注,可选
	IsProcess        int32        `json:"isProcess"`                              // 是否需要加工1，2不需要加工
	CheckListId      uint64       `json:"checkListId" validate:"omitempty"`
	CheckCode        string       `json:"checkCode" validate:"omitempty"`                                     // 可选，检查单编号
	BusinessUserId   uint64       `json:"businessUserId" validate:"required"`                                 // 业务员ID
	BusinessUserName string       `json:"businessUserName" validate:"required"`                               // 业务员名称
	BusinessTime     int64        `json:"businessTime" validate:"required"`                                   // 业务时间
	VipDiscount      int64        `json:"vipDiscount" validate:"omitempty,gte=0"`                             // 可选，VIP优惠金额，大于等于0
	SubTotalDiscount int64        `json:"subTotalDiscount" validate:"omitempty,gte=0"`                        // 可选，分项优惠总额
	ReceivableAmount int64        `json:"receivableAmount" validate:"omitempty,gte=0"`                        // 可选，应收总额（未计算直减）
	TotalDiscount    int64        `json:"totalDiscount" validate:"omitempty,gte=0"`                           // 可选，整单直减
	OrganId          uint64       `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
}

type UpdateCustomerTrainCountReq struct {
	CustomerId uint64 `json:"customerId" validate:"required"`       // 客户ID
	TrainCount int64  `json:"trainCount" validate:"required,gte=0"` // 培训次数
}

type ReportDataForApi struct {
	ID               uint64 `json:"id,optional" validate:"omitempty" msg:"id"`           // 主键ID
	CreatedAt        string `json:"createdAt,optional" validate:"omitempty" msg:"创建时间"`  // 创建时间，这是给前端看的，所以应该由时间戳转成对应的日期字符串
	UpdatedAt        string `json:"updatedAt,optional" validate:"omitempty" msg:"更新时间"`  // 更新时间，这是给前端看的，所以应该由时间戳转成对应的日期字符串
	TemplateId       uint64 `json:"templateId" validate:"required"  msg:"模板id"`          // 模版id
	VisitorId        uint64 `json:"visitorId" validate:"required"  msg:"访客id"`           // 访客id
	ReportPeopleName string `json:"reportPeopleName" validate:"required"  msg:"报告人姓名"`   // 报告人姓名
	PhoneNumber      string `json:"phoneNumber" validate:"required"  msg:"报告人电话号码"`      // 报告人电话
	ReportPeopleAge  int32  `json:"reportPeopleAge" validate:"required"  msg:"报告人年龄"`    // 报告人年龄
	ReportPeopleSex  int32  `json:"reportPeopleSex" validate:"required"  msg:"报告人性别"`    // 报告人性别
	ReportPdf        string `json:"reportPdf" validate:"required"  msg:"报告地址"`           // 报告地址
	OpinionInfo      string `json:"opinionInfo" validate:"required"  msg:"意见信息"`         // 意见
	SessionId        string `json:"sessionId" validate:"required"  msg:"会话id"`           // 会话id
	ProjectId        uint64 `json:"projectId,optional" validate:"omitempty"  msg:"项目id"` // 项目id
	ProjectName      string `json:"projectName" validate:"required"  msg:"项目名称"`
	Code             string `json:"code" validate:"required"  msg:"检查单编号"` // 检查单编号
	IsUse            int32  `json:"isUse,optional" validate:"omitempty"  msg:"是否使用该报告,1为是,2为否"`
}

type ReportDataForApiList struct {
	List  []ReportDataForApi `json:"list"`
	Total int64              `json:"total"`
}
type ReportDataForApiListResp struct {
	Data ReportDataForApiList `json:"data"`
	Resp
}
type GetGlassesStorePurchaseOrderDetailReqForApi struct {
	Id uint64 `json:"id"` // 采购单ID
}

type GlassesStorePurchaseOrderForApi struct {
	Id               uint64                                `json:"id,optional"`                                                        // 眼镜店采购单ID
	ProviderId       uint64                                `json:"providerId"`                                                         // 供应商ID
	OrganId          uint64                                `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
	TotalAmount      int64                                 `json:"totalAmount,optional"`                                               // 应付金额
	PaidAmount       int64                                 `json:"paidAmount,optional"`                                                // 付款金额
	Discount         int64                                 `json:"discount,optional"`                                                  // 折扣金额
	Quantity         int64                                 `json:"quantity,optional"`                                                  // 数量
	Status           int32                                 `json:"status,optional"`                                                    // 采购单状态(1待确定,2确定)
	Remark           string                                `json:"remark,optional"`                                                    // 备注
	ProviderName     string                                `json:"providerName,optional"`                                              // 供应商名称
	ProviderPhone    string                                `json:"providerPhone,optional"`                                             // 供应商电话
	CreatedAt        int64                                 `json:"createdAt,optional"`                                                 // 采购单创建时间
	UpdatedAt        int64                                 `json:"updatedAt,optional"`                                                 // 采购单更新时间
	OrderCode        string                                `json:"orderCode,optional"`                                                 // 采购单号
	Items            []GlassesStorePurchaseOrderItemForApi `json:"items"`                                                              // 采购单商品列表
	CreateUserId     uint64                                `json:"createUserId,optional"`                                              // 创建人ID
	CreateUserName   string                                `json:"createUserName,optional"`                                            // 创建人姓名
	InventoryCount   int64                                 `json:"inventoryCount,optional"`                                            // 已入库数量
	BusinessUserId   uint64                                `json:"businessUserId,optional"`                                            // 业务员ID
	BusinessUserName string                                `json:"businessUserName,optional"`                                          // 业务员名称
	BusinessTime     int64                                 `json:"businessTime,optional"`                                              // 业务时间
}

type GlassesStorePurchaseOrderItemForApi struct {
	Id              uint64 `json:"id,optional"`                      // 采购单商品ID
	GoodsId         uint64 `json:"goodsId,optional"`                 // 商品ID
	Count           int64  `json:"count,optional"`                   // 数量
	PriceAtOrder    int64  `json:"priceAtOrder,optional"`            // 订单商品单价
	Discount        int64  `json:"discount,optional"`                // 折扣
	Amount          int64  `json:"amount,optional"`                  // 总价
	GoodsTitle      string `json:"goodsTitle,optional"`              // 商品名称
	GoodsImgAtOrder string `json:"goodsImgAtOrder,optional"`         // 商品图片
	BrandName       string `json:"brandName,optional"`               // 品牌名称
	CategoryName    string `json:"categoryName,optional"`            // 分类名称
	TypeName        string `json:"typeName,optional"`                // 商品类型名称
	GoodsCode       string `json:"goodsCode,optional"`               // 商品编码
	ProviderId      uint64 `json:"providerId,optional"`              // 供应商ID
	OrderId         uint64 `json:"orderId,optional"`                 // 采购单ID
	InventoryCount  int64  `json:"inventoryCount,optional"`          // 已入库数量
	GoodsSpecId     uint64 `json:"goodsSpecId,optional"`             //规格ID
	GoodsSpecName   string `json:"goodsSpecName,optional"`           // 规格名称
	Spelling        string `json:"spelling" validate:"omitempty"`    // 可选，拼音码
	Description     string `json:"description" validate:"omitempty"` // 可选，标签
}

type GetGlassesStorePurchaseOrderDetailRespForApi struct {
	Order GlassesStorePurchaseOrderForApi `json:"order"` // 采购单信息
}

type GetGlassesStorePurchaseOrderDetailRespForApiResp struct {
	Data GetGlassesStorePurchaseOrderDetailRespForApi `json:"data"`
	Resp
}

type CreateGlassesStorePurchaseOrderRespForApi struct {
	GlassesStorePurchaseOrder GlassesStorePurchaseOrderForApi `json:"glassesStorePurchaseOrder"` // 采购单信息
}
type CreateGlassesStorePurchaseOrderRespForApiResp struct {
	Data CreateGlassesStorePurchaseOrderRespForApi `json:"data"`
	Resp
}

type CreateGlassesStorePurchaseOrderReqForApi struct {
	GlassesStorePurchaseOrder GlassesStorePurchaseOrderForApi `json:"glassesStorePurchaseOrder"`                                          // 采购单信息
	OrganId                   uint64                          `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
}

type GetGlassesStorePurchaseOrderListReqForApi struct {
	Page         int64  `json:"page"`                  // 页码
	PageSize     int64  `json:"pageSize"`              // 每页数量
	Status       int32  `json:"status,optional"`       // 采购单状态(1待确定,2确定)
	ProviderInfo string `json:"providerInfo,optional"` //过滤供应商名称和电话号码
	StartDate    int64  `json:"startDate,optional"`
	EndDate      int64  `json:"endDate,optional"`
	OrderCode    string `json:"orderCode,optional"`
	ProviderId   uint64 `json:"providerId,optional"`                                                // 供应商ID
	OrganId      uint64 `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
}

type GetGlassesStorePurchaseOrderListRespForApi struct {
	PurchaseOrders []GlassesStorePurchaseOrderForApi `json:"purchaseOrders"` // 采购单列表
	Total          int64                             `json:"total"`          // 总数
}

type GetGlassesStorePurchaseOrderListRespForApiResp struct {
	Data GetGlassesStorePurchaseOrderListRespForApi `json:"data"`
	Resp
}

type UpdateGlassesStorePurchaseOrderReqForApi struct {
	GlassesStorePurchaseOrder GlassesStorePurchaseOrderForApi `json:"glassesStorePurchaseOrder"`                                          // 采购单信息
	OrganId                   uint64                          `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
}

type DeleteGlassesStorePurchaseOrderReqForApi struct {
	Id uint64 `json:"id"` // 采购单ID
}

type GlassesStorePurchaseOrderRecordListReqForApi struct {
	OrderId uint64 `json:"orderId"` // 采购单ID
	Page    int64  `json:"page"`    // 页码
	Size    int64  `json:"size"`    // 每页数量
}
type GlassesStorePurchaseOrderRecordListRespForApi struct {
	Total int64                                   `json:"total"` // 总数
	List  []GlassesStorePurchaseOrderRecordForApi `json:"list"`  // 采购单操作记录列表
}

type GlassesStorePurchaseOrderRecordListRespForApiResp struct {
	Data GlassesStorePurchaseOrderRecordListRespForApi `json:"data"`
	Resp
}
type GlassesStorePurchaseOrderRecordForApi struct {
	Id               uint64 `json:"id,optional"`                                                        // 眼镜店采购单操作记录ID
	ProviderId       uint64 `json:"providerId"`                                                         // 供应商ID
	OrganId          uint64 `json:"organId,optional" form:"organId,optional" validate:"omitempty,gt=0"` //组织机构ID
	TotalAmount      int64  `json:"totalAmount,optional"`                                               // 应付金额
	PaidAmount       int64  `json:"paidAmount,optional"`                                                // 付款金额
	Discount         int64  `json:"discount,optional"`                                                  // 折扣金额
	Quantity         int64  `json:"quantity,optional"`                                                  // 数量
	Status           int32  `json:"status,optional"`                                                    // 采购单状态(1待确定,2确定)
	Remark           string `json:"remark,optional"`                                                    // 备注
	ProviderName     string `json:"providerName,optional"`                                              // 供应商名称
	ProviderPhone    string `json:"providerPhone,optional"`                                             // 供应商电话
	CreatedAt        int64  `json:"createdAt,optional"`                                                 // 采购单操作记录的创建时间
	OrderCode        string `json:"orderCode,optional"`                                                 // 采购单号
	CreateUserId     uint64 `json:"createUserId,optional"`                                              // 创建人ID
	CreateUserName   string `json:"createUserName,optional"`                                            // 创建人姓名
	UpdateUserId     uint64 `json:"updateUserId,optional"`                                              // 创建人ID
	UpdateUserName   string `json:"updateUserName,optional"`                                            // 创建人姓名
	InventoryCount   int64  `json:"inventoryCount,optional"`                                            // 已入库数量
	LogInfo          string `json:"logInfo,optional"`                                                   // 操作记录信息
	BusinessUserId   uint64 `json:"businessUserId,optional"`                                            // 业务员ID
	BusinessUserName string `json:"businessUserName,optional"`                                          // 业务员名称
	BusinessTime     int64  `json:"businessTime,optional"`                                              // 业务时间
}

type CancelGlassesStorePurchaseOrderReqForApi struct {
	OrderId uint64 `json:"orderId"` // 采购单ID
}

type ConfirmGlassesStorePurchaseOrderReqForApi struct {
	Id     uint64 `json:"id"`     // 采购单ID
	Status int32  `json:"status"` // 采购单状态(1-草稿,2-已制单,3-已入库)
}
